<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<link href="style.css" type="text/css" rel="stylesheet">
<title>LAHF—Load Status Flags into AH Register </title></head>
<body>
<h1>LAHF—Load Status Flags into AH Register</h1>
<table>
<tr>
<th>Opcode</th>
<th>Instruction</th>
<th>Op/En</th>
<th>64-Bit Mode</th>
<th>Compat/Leg Mode</th>
<th>Description</th></tr>
<tr>
<td>9F</td>
<td>LAHF</td>
<td>NP</td>
<td>Invalid*</td>
<td>Valid</td>
<td>Load: AH ← EFLAGS(SF:ZF:0:AF:0:PF:1:CF).</td></tr></table>
<p><strong>NOTES: *Valid in specific steppings. See Description section.</strong></p>
<h3>Instruction Operand Encoding</h3>
<table>
<tr>
<td>Op/En</td>
<td>Operand 1</td>
<td>Operand 2</td>
<td>Operand 3</td>
<td>Operand 4</td></tr>
<tr>
<td>NP</td>
<td>NA</td>
<td>NA</td>
<td>NA</td>
<td>NA</td></tr></table>
<h2>Description</h2>
<p>This instruction executes as described above in compatibility mode and legacy mode. It is valid in 64-bit mode only if CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1.</p>
<h2>Operation</h2>
<pre>IF 64-Bit Mode
    THEN
         IF CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1;
              THEN AH ← RFLAGS(SF:ZF:0:AF:0:PF:1:CF); ELSE #UD;
         FI;
    ELSE
         AH ← EFLAGS(SF:ZF:0:AF:0:PF:1:CF);
FI;</pre>
<h2>Flags Affected</h2>
<p>None. The state of the flags in the EFLAGS register is not affected.</p>
<h2>Protected Mode Exceptions</h2>
<table class="exception-table">
<tr>
<td>#UD</td>
<td>If the LOCK prefix is used.</td></tr></table>
<h2>Real-Address Mode Exceptions</h2>
<p>Same exceptions as in protected mode.</p>
<h2>Virtual-8086 Mode Exceptions</h2>
<p>Same exceptions as in protected mode.</p>
<h2>Compatibility Mode Exceptions</h2>
<p>Same exceptions as in protected mode.</p>
<h2>64-Bit Mode Exceptions</h2>
<table class="exception-table">
<tr>
<td>#UD</td>
<td>
<p>If CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 0.</p>
<p>If the LOCK prefix is used.</p></td></tr></table></body></html>